package cn.hznc.repository;

import cn.hznc.domain.entity.EntryExitRecordEntity;
import cn.hznc.domain.entity.ToolConsumptionandUsageAnalysisEntity;
import cn.hznc.domain.entity.ToolPartEntity;
import cn.hznc.domain.request.toolAnalyze.PersonnelUsageAnalysisReq;
import cn.hznc.domain.request.toolAnalyze.ToolConsumptionReq;
import cn.hznc.domain.request.toolAnalyze.ToolConsumptionandUsageAnalysisReq;
import cn.hznc.domain.request.toolAnalyze.ToolTypeUsageAnalysisReportReq;
import cn.hznc.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Author：Administrator
 * @Date：2023/5/19 14:46
 */
public interface EntryExitRecordRepository{
    Integer getOutboundRecordByType(@Param("partType") String partType);

    List<String> getToolPartList(@Param("id") Integer id);

    List<ToolTypeStockVo> countUsingNumber(@Param("type") String type,@Param("date") String date);

    List<EntryExitRecordEntity> selectList();

    Integer selectNumber(@Param("startTime") Date startTime,@Param("endTime") Date endTime,@Param("warehouseName") String warehouseName,@Param("partno") String partno,@Param("toolNo") String toolNo,@Param("type") String type);

    List<InOrOutboundSumVo> selectSumVo(ToolTypeUsageAnalysisReportReq toolTypeUsageAnalysisReportReq);

    List<InOrOutboundRecordVo> queryToolInboundAndOutboundDetail(ToolTypeUsageAnalysisReportReq toolTypeUsageAnalysisReportReq);

    List<ToolConsumptionandUsageAnalysisEntity> selectToolConsumption(ToolConsumptionReq toolConsumptionReq);

    List<RecordGroupOperatorIndexVo> selectGroupIndex(PersonnelUsageAnalysisReq personnelUsageAnalysisReq);

    List<RecordGroupOperatorIndexVo> selectGroupIndexReload(PersonnelUsageAnalysisReq personnelUsageAnalysisReq);

    List<RecordGroupOperatorIndexVo> selectIndex(PersonnelUsageAnalysisReq personnelUsageAnalysisReq);

    List<RecordGroupOperatorIndexVo> selectIndexReload(PersonnelUsageAnalysisReq personnelUsageAnalysisReq);

    List<EntryExitRecordEntity> selectListByCondition(PersonnelUsageAnalysisReq personnelUsageAnalysisReq);

    Integer selectToolPartIdByEntryId(@Param("entryExitRecordId") Integer entryExitRecordId);

    String selectNearlyWarehouseName(@Param("toolPartId") Integer toolPartId);
}
